package com.meilai.project.service.business.dataLevel;

import com.baomidou.mybatisplus.extension.service.IService;
import com.meilai.project.dto.business.dataLevel.DataLevelDTO;
import com.meilai.project.dto.business.dataLevel.DataLevelRemoveDTO;
import com.meilai.project.entity.business.dataLevel.DataQueryBusinessLevel;
import com.meilai.project.entity.personnel.org.Role;
import com.meilai.project.vo.business.dataLevel.DataLevelVO;
import com.meilai.project.vo.business.dataLevel.LevelUserVO;

import java.util.List;

/**
 * <p>
 * 业务等级表 服务类
 * </p>
 *
 * @author xhy
 * @since 2022-09-21
 */
public interface DataQueryBusinessLevelService extends IService<DataQueryBusinessLevel> {

    /**
     * 获取所有的业务等级数据
     *
     * @return
     */
    List<DataLevelVO> queryDataLevelVOList();

    /**
     * 保存等级数据
     *
     * @param dto
     * @return
     */
    Boolean saveLevel(DataLevelDTO dto);

    /**
     * 给等级添加角色
     *
     * @param dto
     * @return
     */
    Boolean addLevelRole(DataLevelDTO dto);

    /**
     * 查询能添加等级的角色的集合
     *
     * @param code
     * @param level
     * @return
     */
    List<Role> queryCanAddRoleList(String code, Integer level);

    /**
     * 给等级添加用户
     *
     * @param dto
     * @return
     */
    Boolean addLevelUser(DataLevelDTO dto);

    /**
     * 删除等级中的用户
     *
     * @param dto
     * @return
     */
    Boolean removeLevelUser(DataLevelRemoveDTO dto);

    /**
     * 删除等级中的的角色
     *
     * @param dto
     * @return
     */
    Boolean removeLevelRole(DataLevelRemoveDTO dto);

    /**
     * 根据数据code获取用户最大的等级
     *
     * @param code    业务code
     * @param user_id 用户id
     * @return 等级 返回一个大于1的数值
     */
    int getUserMaxLevel(String code, Long user_id);

    /**
     * 删除等级
     * <p>
     * todo 废弃
     *
     * @param code
     * @param level
     * @return
     */
    Boolean removeLevel(String code, Integer level);

    /**
     * 查询等级用户数据
     *
     * @param code
     * @return
     */
    List<LevelUserVO> queryLevelUserVO(String code);
}
